package com.wl.common.core.utils.tree;

import java.util.List;

/**
 * @author: wanglin
 * @date: 2023-09-22 周五
 * @Version: 1.0
 * @Description: 树节点接口，若需要使用{ TreeUtils}工具类生成树形结构等操作的节点都需要实现该接口
 */
public interface TreeNode<T> {

    /**
     * 树节点id
     *
     * @return
     */
    T id();

    /**
     * 获取该节点的父节点id
     *
     * @return
     */
    T parentId();

    /**
     * 是否是根节点
     *
     * @return
     */
    Boolean root();

    /**
     * 设置节点的子节点列表
     *
     * @param children
     */
    void setChildren(List<? extends TreeNode<T>> children);

    /**
     * 获取所有子节点
     *
     * @return
     */
    List<? extends TreeNode<T>> getChildren();
}

